package main

import "fmt"

func main() {
	//1.if
	// if 表达式1 {
	// 	分支1
	// } else if 表达式2 {
	// 	分支2
	// } else{
	// 	分支3
	// }
	a := 10
	if a == 10 {
		fmt.Println(a)
	} else if a > 10 {
		fmt.Println("大于10")
	} else {
		fmt.Println("小于10")
	}

	//特殊写法
	if b := 10; b == 10 {
		fmt.Println(b)
	} else if b > 10 {
		fmt.Println("大于10")
	} else {
		fmt.Println("小于10")
	}

	//2.for
	// for 初始语句;条件表达式;结束语句{
	// 循环体语句
	//}
	for i := 0; i < 10; i++ {
		fmt.Println(i)
	}

	//3.for range
	var aaa = []int{11, 22, 33, 44}

	for _, value := range aaa {
		fmt.Print(value)
	}

	//4.switch case
	aa := 33
	switch aa {
	case 11, 22:
		fmt.Println(aa)
	default:
		fmt.Println("无效输入")
	}
	//表达式
	bb := 44
	switch {
	case bb > 44:
		fmt.Println(bb)
	case bb == 44:
		fmt.Println("yes")
	case bb < 44:
		fmt.Println("no")
	}

	//5.goto
	for m := 1; m < 5; m++ {
		for n := 1; n < 10; n++ {
			fmt.Println(m, n)
			if n == 5 {
				goto breakTo
			}
		}
	}

breakTo:
	fmt.Println("结束")

	// gotoDemo2()

	//break
	breakDemo1()

	//continue
	// continueDemo1()

	// 9*9
	nineTonine()

}

func breakDemo1() {
BREAKDEMO1:
	for i := 0; i < 10; i++ {
		for j := 0; j < 10; j++ {
			if j == 2 {
				break BREAKDEMO1
			}
			fmt.Printf("%v-%v\n", i, j)
		}
	}
	fmt.Println("...")
}

func continueDemo1() {
CONTINUETAG:
	for i := 0; i < 10; i++ {
		for j := 0; j < 10; j++ {
			if j == 2 {
				continue CONTINUETAG
			}
			fmt.Printf("%v-%v\n", i, j)
		}
	}
}

func gotoDemo2() {
	for i := 0; i < 10; i++ {
		for j := 0; j < 10; j++ {
			if j == 2 {
				// 设置退出标签
				goto breakTag
			}
			fmt.Printf("%v-%v\n", i, j)
		}
	}
	return
	// 标签
breakTag:
	fmt.Println("结束for循环")
}

func nineTonine() {
	for i := 1; i < 10; i++ {
		for j := 1; j < 10; j++ {
			if j > i {
				fmt.Printf("\n")
				break
			} else {
				fmt.Printf("%v*%v=%v\t", i, j, i*j)
			}
		}
	}
}
